#include <vector>
using namespace std;
/*
 * @lc app=leetcode.cn id=88 lang=cpp
 *
 * [88] 合并两个有序数组
 */

// @lc code=start
class Solution {
public:
    // 逆向双指针啊, 妙啊
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int cur = nums1.size() - 1; m--; n--;
        while (cur >= 0 && m >= 0 && n >= 0) {
            if (nums1[m] > nums2[n]) {
                nums1[cur] = nums1[m];
                m--;
            } else {
                nums1[cur] = nums2[n];
                n--;
            } 
            cur--;
        }

        // 如果cur还没有迭代完毕, 但是m已经归0了
        while (n >= 0 && cur >= 0) {
            nums1[cur] = nums2[n];
            cur--; n--;
        } 
    }
};
// @lc code=end

